<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    对象的解构与数组有一个重要的不同。
    数组的元素是按次序排列的，变量的取值由它的位置决定；
    而对象的属性没有次序，变量必须与属性同名，才能取到正确的值。

    <script>
        // 对象解构赋值
        let {foo,bar,baz}={foo:"你好",bar:12};
        console.log(foo,bar,baz);//  你好 12 undefined   baz属性匹配失败  赋值失败


        // 属性名字:变量名字一样   foo:foo--->foo
        //let {foo}={foo:"你好"};---{foo:foo}={foo:"你好"}  前foo是模式   后foo是变量

         // 属性名字:变量名字不一样   foo:app--->foo:app
        let {foo1:app}={foo1:"你好"};//---{foo1:app}={foo1:"你好"}  [app="你好"]前foo是模式   后foo是变量
        console.log(app);
        // console.log(foo1);

        // 案例
        let {log}=console;//Math[对象]
        log(123)

        //模式慎独
        let obj={
            p:{
                app:"小鸟",
                line:{
                    say:"哈哈哈"
                }
            }
        }
        let {p}=obj; ///给p赋值
        let {p:{app},p:{app,line:a}}=obj;//按照模式匹配
        //数组对象的联系赋值

    </script>
</body>
</html>